Hash functions are well known in the data security field. Some hash functions are keyed (such as message authentication codes—MAC), but most instead rely on the security of the hash function (algorithm) itself. Such algorithms are subject to various attacks, such as the well known “pairs” attack (differential analysis).
A hash function conventionally is a deterministic procedure that accepts an arbitrary input value, and returns a hash value of predetermined and fixed length. The input value is called the message, and the hash value is called the digest. Well known secure (cryptographic) hash functions include SHA-1, SHA-2 and others. Such hash functions are “second preimage resistant” in that given the message it is easy using a computer or equivalent to compute the digest, but given a particular message it is very difficult to find another message with the same digest. In the same manner, hash functions are designed to be one way, that is, it is complex to find a message whose digest is a given value. So the digest is a unique “fingerprint” of the message.